//本文主要解决的问题有以下三个：
//（1）constructor 和 prototype 以及实例之间啥关系？
//（2）prototype是啥，__proto__又是啥，他们之间啥关系？
//（3）如果改变一个 constructor 的 prototype，他的实例会发生什么改变？

function Person(name, age) {
  this.name = name
  this.age = age
}

var person1 = new Person('rays77', 18)
var person2 = new Person('Alice', 20)

Person('meow', 17)

console.log(`person1 is ${JSON.stringify(person1)}`)
console.log(name)
console.log(age)

console.log(`person1.constructor->`, person1.constructor)
console.log('person2.constructor->', person2.constructor)
console.log(
  'person1.constructor == person2.constructor',
  person1.constructor == person2.constructor
)

console.log(
  'person1.__proto__ === Person.prototype => ',
  person1.__proto__ === Person.prototype ? '相等' : '不等'
)

console.log(
  'person1.constructorcls === Person.prototype.constructor => ',
  person1.constructor === Person.prototype.constructor ? '相等' : '不等'
)

function test() {}
let tester = new test()
console.log(tester.__proto__)
console.log(test.prototype)
